<?php
!defined('M_MODEL_DIR')&&define('M_MODEL_DIR',M_DIR.'model/');
class lib_db extends lib_milkphp_library{
	/**
	 * 数据库连接
	 * @var array
	 */
	private $_db;
	
	static function _do($model=NULL){
		static $instance = NULL;

		if(is_null($instance))
			$instance = new lib_db();
		
		if(empty($model)){
			return $instance;
		}
		
		if(!preg_match("/^[a-z|0-9|A-Z|_]+$/",$model)){
			milkphp()->debug('e',"model name:$model 不合法");
			return;
		}
		return $instance->getModel($model);
	}
	
	function __construct(){
		/**
		 * 注册autoload,自动加载controller
		 */
		spl_autoload_register(array('lib_db','autoload'));
	}
	
	/**
	 * 自动加载model文件
	 */
	private static function autoload($class){
		if('model_' != substr($class,0,6))return;
		$file=M_MODEL_DIR.substr($class,0,6).'.php';
		if(@include($file)){
			milkphp()->debug('i',"include 文件 $file");
		}else{
			milkphp()->debug('e',"文件 $file 不存在");
		}
	}
	
	function getModel($modelName){
		$modelClassName = 'model_'.$modelName;
		return new $modelClassName();
	}
	
	/**
	 * 返回数据库连接
	 * @param string $dbType
	 */
	function connect($dbType="mysql"){
		if(!$this->_db[$dbType]){		
			$className = 'lib_db_'.$dbType;
			$this->_db[$dbType] = new $className();
		}
		return $this->_db[$dbType];
	}
	
}